package com.ly.algorithm.leetcode.stack;

import java.util.Stack;

/**
 * @Classname Problem71
 * @Description
 *
 * 示例 1：
 *
 * 输入："/home/"
 * 输出："/home"
 * 解释：注意，最后一个目录名后面没有斜杠。
 * 示例 2：
 *
 * 输入："/../"
 * 输出："/"
 * 解释：从根目录向上一级是不可行的，因为根是你可以到达的最高级。
 * 示例 3：
 *
 * 输入："/home//foo/"
 * 输出："/home/foo"
 * 解释：在规范路径中，多个连续斜杠需要用一个斜杠替换。
 * 示例 4：
 *
 * 输入："/a/./b/../../c/"
 * 输出："/c"
 * 示例 5：
 *
 * 输入："/a/../../b/../c//.//"
 * 输出："/c"
 * 示例 6：
 *
 * 输入："/a//b////c/d//././/.."
 * 输出："/a/b/c"
 *
 *
 * @Date 2020/12/18 11:29
 * @Author 冷心影翼
 */
public class Problem71 {


	public static void main(String[] args) {
		Solution71 solution71 = new Solution71();
		System.out.println(solution71.simplifyPath("/a//b////c/d//././/.."));
	}
}


class Solution71 {
	public String simplifyPath(String path) {
		String[] items = path.split("/");
		Stack<String> stack = new Stack<>();
		for(String item : items) {
			if(item.equals(".") || item.isEmpty()) {
				continue;
			}
			if(item.equals("..")) {
				if(!stack.isEmpty())
					stack.pop();
			}
			else
				stack.push(item);
		}
		return "/"+String.join("/",stack);
	}
}